package com.airsky.user.controller;

import com.airsky.user.entity.AirSky_User;
import com.airsky.user.entity.PageResult;
import com.airsky.user.service.UserService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author LT
 * @version 1.0.0
 * @ClassName UserController.java
 * @Description TODO 用户控制层
 * @createTime 2020年06月28日 15:07:00
 * <p>
 * 1、 查询功能
 *  查询字段:：登录名（支持模糊查询）、
 * 性别（提供下拉选择框：空值、男、女）、
 * 出生开始日期、结束日期（要求出生开始日期必须小于结束日期）、
 * 用户状态（下来列表：全部、启用、禁用）、
 * 所属省份、注册开始时间、结束时间（要求开始时间必须小于结束时间）
 * <p>
 *  查询列表，实现分页功能（物理数据库）
 * <p>
 * 2、 删除功能
 * 删除前，判断该用户是否是‘禁用’状态，否则不能
 * <p>
 * 3、 新增功能
 * 根据数据字典，完成所有的必输项、长度校验；出生日期必须年满 18 周岁、邮编必须全是数字、两次密码输入一致、登录名必须唯一、密码必须 MD5保存
 * <p>
 * 4、 修改功能（参考新增的说明）
 * 5、 复制功能（参考新增的说明）
 *
 * </p>
 */
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查询列表
     *
     * @param loginName
     * @param pageNum
     * @param pageSize
     * @return
     */
    @GetMapping("/list")
    public PageInfo<AirSky_User> queryUserByPage(
            @RequestParam(required = false) String loginName,
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "5") int pageSize) {

        // 用PageInfo类封装实体类(AirSky_User)
        PageInfo<AirSky_User> userPageResult = userService.queryUserByPage(loginName, pageNum, pageSize);
        return userPageResult;
    }

    /**
     * 按用户ID删除
     *
     * @param userId
     * @return
     */
    @DeleteMapping("/delete")
    public String deleteByUserId(Integer userId) {
        String deleteByUserId = userService.deleteByUserId(userId);
        return deleteByUserId;
    }

    /**
     * 保存用户
     *
     * @param user
     * @return
     */
    @PostMapping("save")
    public String saveUser(AirSky_User user) {
        String save = userService.save(user);
        return save;
    }

    /**
     * 更新用户
     *
     * @param user
     * @return
     */
    @PostMapping("/update")
    public String edit(AirSky_User user) {
        if (user.getUserId() != null) {
            String update = userService.update(user);

            return update;
        }
        String save = userService.save(user);
        return save;
    }

}
